package controller;

import Dto.GoodsDto;
import model.Goods;
import model.User;
import model.common.Msg;
import service.GoodsService;
import service.impl.GoodsServiceImpl;
import utils.JSONUtil;

import java.util.List;


public class GoodsController extends BaseController {

    private Goods goods;

    private final GoodsService goodsService;


    public GoodsController() {
        goodsService = new GoodsServiceImpl();
    }

    public String getGoodsList() {
        Msg msg = new Msg();
        try {
            List<Goods> goodsList = goodsService.getGoodsListDb();
            msg.setObj(goodsList);
            msg.setType(Msg.SUCCESS);
            String result = JSONUtil.entity2JSON(msg);
            //??????
            log.info("获取商品列表成功");
            return result;
        } catch (Exception e) {
            msg.setType(Msg.FAIL);
            msg.setMsg("获取商品列表失败");
            log.error("获取商品列表失败" + e.getMessage());
        }
        return JSONUtil.entity2JSON(msg);
    }

    public String getDGoodsDetail(String name) {
        Msg msg = new Msg();
        try {
            Goods goods = goodsService.findGoodsByName(name).get(0);
            msg.setObj(goods);
            msg.setType(Msg.SUCCESS);
            String result = JSONUtil.entity2JSON(msg);
            log.info("获取" + name + "商品信息成功");
            return result;
        } catch (Exception e) {
            msg.setType(Msg.FAIL);
            msg.setMsg("获取商品详情失败");
            //4.??????
            log.error("获取商品详情失败" + e.getMessage());
        }
        return JSONUtil.entity2JSON(msg);
    }

    public String getGoodsById(String id) {
        Msg msg = new Msg();
        Goods goods = goodsService.findAGoodsById(id);
        msg.setObj(goods);
        msg.setType(Msg.SUCCESS);
        return JSONUtil.entity2JSON(msg);
    }

    public void updateGoodsById(String id, Goods goods) {
        int row = goodsService.updateGoods(id, goods);
        Msg msg = new Msg();
        if (row > 0) {
            msg.setType(Msg.SUCCESS);
            msg.setMsg("修改商品信息成功");
        } else {
            msg.setType(Msg.FAIL);
            msg.setMsg("修改商品信息失败");

        }
        JSONUtil.entity2JSON(msg);
    }


    public void addGoods(Goods goods) {
        goodsService.addAGoods(goods);
    }

    public void deleteGoods(String id) {
        goodsService.delAGoods(id);
    }

    public String buyGoods(User user, GoodsDto goodsDto) {
        Msg msg = new Msg();
        int i = goodsService.buyGoods(user, goodsDto);
        if (i > 0) {
            msg.setType(Msg.SUCCESS);
            msg.setMsg("购买成功");
        } else if (i == -1) {
            msg.setMsg("用户余额不足或者商品库存不足, 无法购买商品");
            msg.setType(Msg.FAIL);
        } else {
            msg.setType(Msg.FAIL);
            msg.setMsg("购买失败");

        }
        return JSONUtil.entity2JSON(msg);

    }
}
